Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/ui/messages.py bfcff07025cf00a274c9412cc69d8649f08b8f66 (bfcff070) Text, 46.24 KB

Tff7b72import T7ee787time
Tff7b72import T7ee787RNS
Tff7b72import T7ee787LXMF

Tff7b72from T7ee787kivyT7ee787.T7ee787metrics Tff7b72import Te6edf3dpTb4b4b4,Te6edf3sp
Tff7b72from T7ee787kivyT7ee787.T7ee787coreT7ee787.T7ee787clipboard Tff7b72import Te6edf3Clipboard
Tff7b72from T7ee787kivyT7ee787.T7ee787coreT7ee787.T7ee787image Tff7b72import Te6edf3Image Tff7b72as Te6edf3CoreImage
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787card Tff7b72import Te6edf3MDCard
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787menu Tff7b72import Te6edf3MDDropdownMenu
T8b949e# from kivymd.uix.behaviors import RoundedRectangularElevationBehavior, FakeRectangularElevationBehavior
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787behaviors Tff7b72import Te6edf3CommonElevationBehavior
Tff7b72from T7ee787kivyT7ee787.T7ee787properties Tff7b72import Te6edf3StringPropertyTb4b4b4, Te6edf3BooleanProperty
Tff7b72from T7ee787kivyT7ee787.T7ee787uixT7ee787.T7ee787gridlayout Tff7b72import Te6edf3GridLayout
Tff7b72from T7ee787kivyT7ee787.T7ee787uixT7ee787.T7ee787boxlayout Tff7b72import Te6edf3BoxLayout
Tff7b72from T7ee787kivyT7ee787.T7ee787clock Tff7b72import Te6edf3Clock
Tff7b72from T7ee787kivyT7ee787.T7ee787utils Tff7b72import Te6edf3escape_markup

Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787button Tff7b72import Te6edf3MDRectangleFlatButtonTb4b4b4, Te6edf3MDRectangleFlatIconButton
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787dialog Tff7b72import Te6edf3MDDialog

Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffget_platformTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffandroidTa5d6ff"Tb4b4b4:
Tff7b72from T7ee787uiT7ee787.T7ee787helpers Tff7b72import Te6edf3multilingual_markup
Tff7b72elseTb4b4b4:
Tff7b72from T7ee787.T7ee787helpers Tff7b72import Te6edf3multilingual_markup

Tff7b72import T7ee787io
Tff7b72import T7ee787os
Tff7b72import T7ee787plyer
Tff7b72import T7ee787subprocess
Tff7b72import T7ee787shlex

Tff7b72from T7ee787kivyT7ee787.T7ee787graphicsT7ee787.T7ee787opengl Tff7b72import Te6edf3glGetIntegervTb4b4b4, Te6edf3GL_MAX_TEXTURE_SIZE

Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffget_platformTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffandroidTa5d6ff"Tb4b4b4:
Tff7b72from T7ee787sidebandT7ee787.T7ee787sense Tff7b72import Te6edf3TelemeterTb4b4b4, Te6edf3Commands
Tff7b72from T7ee787uiT7ee787.T7ee787helpers Tff7b72import Te6edf3ts_formatTb4b4b4, Te6edf3file_ts_formatTb4b4b4, Te6edf3mdc
Tff7b72from T7ee787uiT7ee787.T7ee787helpers Tff7b72import Te6edf3color_receivedTb4b4b4, Te6edf3color_deliveredTb4b4b4, Te6edf3color_propagatedTb4b4b4, Te6edf3color_paperTb4b4b4, Te6edf3color_failedTb4b4b4, Te6edf3color_unknownTb4b4b4, Te6edf3intensity_msgs_darkTb4b4b4, Te6edf3intensity_msgs_light
Tff7b72elseTb4b4b4:
Tff7b72from T7ee787sbappT7ee787.T7ee787sidebandT7ee787.T7ee787sense Tff7b72import Te6edf3TelemeterTb4b4b4, Te6edf3Commands
Tff7b72from T7ee787.T7ee787helpers Tff7b72import Te6edf3ts_formatTb4b4b4, Te6edf3file_ts_formatTb4b4b4, Te6edf3mdc
Tff7b72from T7ee787.T7ee787helpers Tff7b72import Te6edf3color_receivedTb4b4b4, Te6edf3color_deliveredTb4b4b4, Te6edf3color_propagatedTb4b4b4, Te6edf3color_paperTb4b4b4, Te6edf3color_failedTb4b4b4, Te6edf3color_unknownTb4b4b4, Te6edf3intensity_msgs_darkTb4b4b4, Te6edf3intensity_msgs_light

Tff7b72from T7ee787kivyT7ee787.T7ee787langT7ee787.T7ee787builder Tff7b72import Te6edf3Builder

Tff7b72class T56d364ListLXMessageCardTb4b4b4(Te6edf3MDCardTb4b4b4)Tb4b4b4:
T8b949e# class ListLXMessageCard(MDCard, FakeRectangularElevationBehavior):
Te6edf3text Tff7b72= Te6edf3StringPropertyTb4b4b4(Tb4b4b4)
Te6edf3heading Tff7b72= Te6edf3StringPropertyTb4b4b4(Tb4b4b4)

Tff7b72class T56d364MessagesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3context_destTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffcontext_dest Tff7b72= Te6edf3context_dest
Tff7b72selfTff7b72.Td2a8ffsource_dest Tff7b72= Te6edf3context_dest
Tff7b72selfTff7b72.Td2a8ffis_trusted Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffis_trustedTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcontext_destTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffscreen Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffget_screenTb4b4b4(Ta5d6ff"Ta5d6ffmessages_screenTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffids Tff7b72= Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffids

Tff7b72selfTff7b72.Td2a8ffmax_texture_size Tff7b72= Te6edf3glGetIntegervTb4b4b4(Te6edf3GL_MAX_TEXTURE_SIZETb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffnew_messages Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffadded_item_hashes Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffadded_messages Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8fflatest_message_timestamp Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffearliest_message_timestamp Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffloading_earlier_messages Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8fflist Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffwidgets Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffsend_error_dialog Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffload_more_button Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffupdateTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffreloadTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fflist Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflistTff7b72.Td2a8ffclear_widgetsTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffnew_messages Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffadded_item_hashes Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffadded_messages Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8fflatest_message_timestamp Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffwidgets Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72selfTff7b72.Td2a8ffupdateTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffload_moreTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3new_message Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fflist_messagesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcontext_destTb4b4b4, Te6edf3beforeTff7b72=Tff7b72selfTff7b72.Td2a8ffearliest_message_timestampTb4b4b4,Te6edf3limitTff7b72=T79c0ff5Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnew_messagesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3new_messageTb4b4b4)

Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffnew_messagesTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffloading_earlier_messages Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8fflistTff7b72.Td2a8ffremove_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffload_more_buttonTb4b4b4)

Tff7b72def Td2a8ffupdateTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3limitTff7b72=T79c0ff8Tb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3new_message Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fflist_messagesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcontext_destTb4b4b4, Te6edf3afterTff7b72=Tff7b72selfTff7b72.Td2a8fflatest_message_timestampTb4b4b4,Te6edf3limitTff7b72=Te6edf3limitTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnew_messagesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3new_messageTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdb_message_count Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffcount_messagesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcontext_destTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffload_more_button Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffload_more_button Tff7b72= Te6edf3MDRectangleFlatIconButtonTb4b4b4(
Te6edf3iconTff7b72=Ta5d6ff"Ta5d6ffmessage-text-clock-outlineTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffLoad earlier messagesTa5d6ff"Tb4b4b4,
Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4,
Te6edf3theme_text_colorTff7b72=Ta5d6ff"Ta5d6ffCustomTa5d6ff"Tb4b4b4,
Te6edf3size_hintTff7b72=Tb4b4b4[T79c0ff1.0Tb4b4b4, Tff7b72NoneTb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fflmcbTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffload_moreTb4b4b4, T79c0ff0.15Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffload_more_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3lmcbTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8fflist Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3layout Tff7b72= Te6edf3GridLayoutTb4b4b4(Te6edf3colsTff7b72=T79c0ff1Tb4b4b4, Te6edf3spacingTff7b72=Te6edf3dpTb4b4b4(T79c0ff16Tb4b4b4)Tb4b4b4, Te6edf3paddingTff7b72=Te6edf3dpTb4b4b4(T79c0ff16Tb4b4b4)Tb4b4b4, Te6edf3size_hint_yTff7b72=Tff7b72NoneTb4b4b4)
Te6edf3layoutTff7b72.Td2a8ffbindTb4b4b4(Te6edf3minimum_heightTff7b72=Te6edf3layoutTff7b72.Td2a8ffsetterTb4b4b4(Ta5d6ff'Ta5d6ffheightTa5d6ff'Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fflist Tff7b72= Te6edf3layout

Te6edf3c_ts Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffnew_messagesTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_widgetTb4b4b4(Tb4b4b4)

Tff7b72if Tb4b4b4(Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffadded_item_hashesTb4b4b4) Tff7b72< Tff7b72selfTff7b72.Td2a8ffdb_message_countTb4b4b4) Tff7b72and Tff7b72not Tff7b72selfTff7b72.Td2a8ffload_more_button Tff7b72in Tff7b72selfTff7b72.Td2a8fflistTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflistTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffload_more_buttonTb4b4b4, Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8fflistTff7b72.Td2a8ffchildrenTb4b4b4)Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffdark_uiTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3intensity_msgs Tff7b72= Te6edf3intensity_msgs_dark
Tff7b72elseTb4b4b4:
Te6edf3intensity_msgs Tff7b72= Te6edf3intensity_msgs_light

Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffwidgetsTb4b4b4:
Te6edf3m Tff7b72= Te6edf3wTff7b72.Td2a8ffm
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffdark_uiTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3wTff7b72.Td2a8ffline_color Tff7b72= Tb4b4b4(T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff0.25Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3wTff7b72.Td2a8ffline_color Tff7b72= Tb4b4b4(T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff0.5Tb4b4b4)

Tff7b72if Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENDING Tff7b72or Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUNDTb4b4b4:
Te6edf3msg Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffmessageTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4)

Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUND Tff7b72or Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENDINGTb4b4b4:
Te6edf3wTff7b72.Td2a8ffmd_bg_color Tff7b72= Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_unknownTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3txstr Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3prgstr Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3prg Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffget_lxm_progressTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72if Te6edf3prg Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3prgstr Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Tffa657roundTb4b4b4(Te6edf3prgTff7b72*T79c0ff100Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Tffd700% dTa5d6ffoneTa5d6ff"
Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff[b]Title[/b] Ta5d6ff"Tff7b72+Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"
Te6edf3wTff7b72.Td2a8ffheading Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] SendingTa5d6ff"Tff7b72+Te6edf3prgstrTff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"
Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4]

Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDELIVEREDTb4b4b4:
Te6edf3wTff7b72.Td2a8ffmd_bg_color Tff7b72= Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_deliveredTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3txstr Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff[b]Title[/b] Ta5d6ff"Tff7b72+Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"
Te6edf3wTff7b72.Td2a8ffheading Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] DeliveredTa5d6ff"
Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4]

Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPAPERTb4b4b4:
Te6edf3wTff7b72.Td2a8ffmd_bg_color Tff7b72= Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_paperTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3txstr Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff[b]Title[/b] Ta5d6ff"Tff7b72+Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"
Te6edf3wTff7b72.Td2a8ffheading Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] Paper MessageTa5d6ff"
Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4]

Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPROPAGATED Tff7b72and Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENTTb4b4b4:
Te6edf3wTff7b72.Td2a8ffmd_bg_color Tff7b72= Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_propagatedTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3txstr Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff[b]Title[/b] Ta5d6ff"Tff7b72+Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"
Te6edf3wTff7b72.Td2a8ffheading Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] On Propagation NetTa5d6ff"
Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4]

Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffFAILEDTb4b4b4:
Te6edf3wTff7b72.Td2a8ffmd_bg_color Tff7b72= Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_failedTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3txstr Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff[b]Title[/b] Ta5d6ff"Tff7b72+Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"
Te6edf3wTff7b72.Td2a8ffheading Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] FailedTa5d6ff"
Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3msgTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4]
Te6edf3wTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffitemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3wTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffretry_itemTb4b4b4)


Tff7b72def Td2a8ffupdate_widgetTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffdark_uiTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3intensity_msgs Tff7b72= Te6edf3intensity_msgs_dark
Te6edf3mt_color Tff7b72= Tb4b4b4[T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff0.8Tb4b4b4]
Tff7b72elseTb4b4b4:
Te6edf3intensity_msgs Tff7b72= Te6edf3intensity_msgs_light
Te6edf3mt_color Tff7b72= Tb4b4b4[T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff1.0Tb4b4b4, T79c0ff0.95Tb4b4b4]

Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8ffmessage_textTff7b72.Td2a8fffont_name Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffinput_font

Tff7b72if Tff7b72selfTff7b72.Td2a8ffloading_earlier_messagesTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnew_messagesTff7b72.Td2a8ffreverseTb4b4b4(Tb4b4b4)

Tff7b72for Te6edf3m Tff7b72in Tff7b72selfTff7b72.Td2a8ffnew_messagesTb4b4b4:
Tff7b72if Tff7b72not Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4] Tff7b72in Tff7b72selfTff7b72.Td2a8ffadded_item_hashesTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_trustedTb4b4b4:
Te6edf3message_input Tff7b72= Tffa657strTb4b4b4( Te6edf3escape_markupTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4)Tff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3message_input Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]

Te6edf3message_markup Tff7b72= Te6edf3multilingual_markupTb4b4b4(Te6edf3message_inputTb4b4b4)

Te6edf3txstr Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3rxstr Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffreceivedTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3extra_content Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3extra_telemetry Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3telemeter Tff7b72= Tff7b72None
Te6edf3image_field Tff7b72= Tff7b72None
Te6edf3has_image Tff7b72= Tff7b72False
Te6edf3attachments_field Tff7b72= Tff7b72None
Te6edf3has_attachment Tff7b72= Tff7b72False
Te6edf3force_markup Tff7b72= Tff7b72False
Te6edf3signature_valid Tff7b72= Tff7b72False

Tff7b72if Ta5d6ff"Ta5d6fflxmTa5d6ff" Tff7b72in Te6edf3m Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72None Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffsignature_validatedTb4b4b4:
Te6edf3signature_valid Tff7b72= Tff7b72True

Tff7b72if Ta5d6ff"Ta5d6ffextrasTa5d6ff" Tff7b72in Te6edf3m Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffextrasTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72None Tff7b72and Ta5d6ff"Ta5d6ffpacked_telemetryTa5d6ff" Tff7b72in Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffextrasTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3telemeter Tff7b72= Te6edf3TelemeterTff7b72.Td2a8fffrom_packedTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffextrasTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffpacked_telemetryTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72pass

Tff7b72if Ta5d6ff"Ta5d6fflxmTa5d6ff" Tff7b72in Te6edf3m Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72None Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffields Tff7b72!= Tff7b72None Tff7b72and Te6edf3LXMFTff7b72.Td2a8ffFIELD_COMMANDS Tff7b72in Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3commands Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4[Te6edf3LXMFTff7b72.Td2a8ffFIELD_COMMANDSTb4b4b4]
Tff7b72for Te6edf3command Tff7b72in Te6edf3commandsTb4b4b4:
Tff7b72if Te6edf3CommandsTff7b72.Td2a8ffECHO Tff7b72in Te6edf3commandTb4b4b4:
Te6edf3extra_content Tff7b72= Ta5d6ff"Ta5d6ff[font=RobotoMono-Regular]> echo Ta5d6ff"Tff7b72+Te6edf3commandTb4b4b4[Te6edf3CommandsTff7b72.Td2a8ffECHOTb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff[/font]Tffea00\nTa5d6ff"
Tff7b72if Te6edf3CommandsTff7b72.Td2a8ffPING Tff7b72in Te6edf3commandTb4b4b4:
Te6edf3extra_content Tff7b72= Ta5d6ff"Ta5d6ff[font=RobotoMono-Regular]> ping[/font]Tffea00\nTa5d6ff"
Tff7b72if Te6edf3CommandsTff7b72.Td2a8ffSIGNAL_REPORT Tff7b72in Te6edf3commandTb4b4b4:
Te6edf3extra_content Tff7b72= Ta5d6ff"Ta5d6ff[font=RobotoMono-Regular]> sig[/font]Tffea00\nTa5d6ff"
Te6edf3extra_content Tff7b72= Te6edf3extra_contentTb4b4b4[Tb4b4b4:Tff7b72-T79c0ff1Tb4b4b4]
Te6edf3force_markup Tff7b72= Tff7b72True
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffError while generating command display: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)

Tff7b72if Te6edf3telemeter Tff7b72== Tff7b72None Tff7b72and Ta5d6ff"Ta5d6fflxmTa5d6ff" Tff7b72in Te6edf3m Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffields Tff7b72!= Tff7b72None Tff7b72and Te6edf3LXMFTff7b72.Td2a8ffFIELD_TELEMETRY Tff7b72in Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3packed_telemetry Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4[Te6edf3LXMFTff7b72.Td2a8ffFIELD_TELEMETRYTb4b4b4]
Te6edf3telemeter Tff7b72= Te6edf3TelemeterTff7b72.Td2a8fffrom_packedTb4b4b4(Te6edf3packed_telemetryTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72pass

Tff7b72if Ta5d6ff"Ta5d6fflxmTa5d6ff" Tff7b72in Te6edf3m Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffields Tff7b72!= Tff7b72None Tff7b72and Te6edf3LXMFTff7b72.Td2a8ffFIELD_IMAGE Tff7b72in Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3image_field Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4[Te6edf3LXMFTff7b72.Td2a8ffFIELD_IMAGETb4b4b4]
Te6edf3has_image Tff7b72= Tff7b72True
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72pass

Tff7b72if Ta5d6ff"Ta5d6fflxmTa5d6ff" Tff7b72in Te6edf3m Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffields Tff7b72!= Tff7b72None Tff7b72and Te6edf3LXMFTff7b72.Td2a8ffFIELD_FILE_ATTACHMENTS Tff7b72in Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4[Te6edf3LXMFTff7b72.Td2a8ffFIELD_FILE_ATTACHMENTSTb4b4b4]Tb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3attachments_field Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fffieldsTb4b4b4[Te6edf3LXMFTff7b72.Td2a8ffFIELD_FILE_ATTACHMENTSTb4b4b4]
Te6edf3has_attachment Tff7b72= Tff7b72True
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72pass

Te6edf3rcvd_d_str Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3trcvd Tff7b72= Te6edf3telemeterTff7b72.Td2a8ffreadTb4b4b4(Ta5d6ff"Ta5d6ffreceivedTa5d6ff"Tb4b4b4) Tff7b72if Te6edf3telemeter Tff7b72else Tff7b72None
Tff7b72if Te6edf3trcvd Tff7b72and Ta5d6ff"Ta5d6ffdistanceTa5d6ff" Tff7b72in Te6edf3trcvdTb4b4b4:
Te6edf3d Tff7b72= Te6edf3trcvdTb4b4b4[Ta5d6ff"Ta5d6ffdistanceTa5d6ff"Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6ffeuclidianTa5d6ff" Tff7b72in Te6edf3dTb4b4b4:
Te6edf3edst Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffeuclidianTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3edst Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3rcvd_d_str Tff7b72= Ta5d6ff"Tffea00\nTa5d6ff[b]Distance[/b] Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3edstTb4b4b4)
Tff7b72elif Ta5d6ff"Ta5d6ffgeodesicTa5d6ff" Tff7b72in Te6edf3dTb4b4b4:
Te6edf3gdst Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffgeodesicTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3gdst Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3rcvd_d_str Tff7b72= Ta5d6ff"Tffea00\nTa5d6ff[b]Distance[/b] Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3gdstTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff (geodesic)Ta5d6ff"

Te6edf3phy_stats_str Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Ta5d6ff"Ta5d6ffextrasTa5d6ff" Tff7b72in Te6edf3m Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffextrasTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3phy_stats Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffextrasTa5d6ff"Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6ffqTa5d6ff" Tff7b72in Te6edf3phy_statsTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3lq Tff7b72= Tffa657roundTb4b4b4(Tffa657floatTb4b4b4(Te6edf3phy_statsTb4b4b4[Ta5d6ff"Ta5d6ffqTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3phy_stats_str Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff[b]Link Quality[/b] Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3lqTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff%Ta5d6ff Ta5d6ff"
Te6edf3extra_telemetryTb4b4b4[Ta5d6ff"Ta5d6ffqualityTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3lq
Tff7b72exceptTb4b4b4:
Tff7b72pass
Tff7b72if Ta5d6ff"Ta5d6ffrssiTa5d6ff" Tff7b72in Te6edf3phy_statsTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3lr Tff7b72= Tffa657roundTb4b4b4(Tffa657floatTb4b4b4(Te6edf3phy_statsTb4b4b4[Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3phy_stats_str Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff[b]RSSI[/b] Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3lrTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffdBm Ta5d6ff"
Te6edf3extra_telemetryTb4b4b4[Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3lr
Tff7b72exceptTb4b4b4:
Tff7b72pass
Tff7b72if Ta5d6ff"Ta5d6ffsnrTa5d6ff" Tff7b72in Te6edf3phy_statsTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3ls Tff7b72= Tffa657roundTb4b4b4(Tffa657floatTb4b4b4(Te6edf3phy_statsTb4b4b4[Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3phy_stats_str Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff[b]SNR[/b] Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3lsTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ffdB Ta5d6ff"
Te6edf3extra_telemetryTb4b4b4[Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ls
Tff7b72exceptTb4b4b4:
Tff7b72pass

Tff7b72if Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3titlestr Tff7b72= Ta5d6ff"Ta5d6ff[b]Title[/b] Ta5d6ff"Tff7b72+Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Ta5d6ff"Tffea00\nTa5d6ff"

Tff7b72if Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffsourceTa5d6ff"Tb4b4b4] Tff7b72== Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fflxmf_destinationTff7b72.Td2a8ffhashTb4b4b4:
Tff7b72if Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffDELIVEREDTb4b4b4:
Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_deliveredTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3heading_str Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] DeliveredTa5d6ff"

Tff7b72elif Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPROPAGATED Tff7b72and Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENTTb4b4b4:
Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_propagatedTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3heading_str Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] On Propagation NetTa5d6ff"

Tff7b72elif Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPAPERTb4b4b4:
Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_paperTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3heading_str Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Created[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] Paper MessageTa5d6ff"

Tff7b72elif Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffFAILEDTb4b4b4:
Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_failedTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3heading_str Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] FailedTa5d6ff"

Tff7b72elif Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffOUTBOUND Tff7b72or Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffSENDINGTb4b4b4:
Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_unknownTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3heading_str Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] Sending Ta5d6ff"

Tff7b72elseTb4b4b4:
Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_unknownTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3heading_str Tff7b72= Te6edf3titlestrTff7b72+Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstrTff7b72+Ta5d6ff"Tffea00\nTa5d6ff[b]State[/b] UnknownTa5d6ff"

Tff7b72elseTb4b4b4:
Te6edf3msg_color Tff7b72= Te6edf3mdcTb4b4b4(Te6edf3color_receivedTb4b4b4, Te6edf3intensity_msgsTb4b4b4)
Te6edf3heading_str Tff7b72= Te6edf3titlestr
Tff7b72if Te6edf3phy_stats_str Tff7b72!= Ta5d6ff"Ta5d6ff" Tff7b72and Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffadvanced_statsTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3heading_str Tff7b72+Tff7b72= Te6edf3phy_stats_strTff7b72+Ta5d6ff"Tffea00\nTa5d6ff"

Te6edf3heading_str Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff[b]Sent[/b] Ta5d6ff"Tff7b72+Te6edf3txstr
Te6edf3heading_str Tff7b72+Tff7b72= Ta5d6ff"Tffea00\nTa5d6ff[b]Received[/b] Ta5d6ff"Tff7b72+Te6edf3rxstr

Tff7b72if Te6edf3rcvd_d_str Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3heading_str Tff7b72+Tff7b72= Te6edf3rcvd_d_str

Te6edf3pre_content Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72not Te6edf3signature_validTb4b4b4:
Te6edf3identity_known Tff7b72= Tff7b72False
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ffrecallTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4) Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3identity_known Tff7b72= Tff7b72True

Tff7b72if Te6edf3identity_known Tff7b72== Tff7b72TrueTb4b4b4:
Te6edf3pre_content Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff[b]Warning![/b] The signature for this message could not be validated. [b]This message is likely to be fake[/b].Tffea00\nTffea00\nTa5d6ff"
Te6edf3force_markup Tff7b72= Tff7b72True

Tff7b72if Te6edf3has_attachmentTb4b4b4:
Te6edf3heading_str Tff7b72+Tff7b72= Ta5d6ff"Tffea00\nTa5d6ff[b]Attachments[/b] Ta5d6ff"
Tff7b72for Te6edf3attachment Tff7b72in Te6edf3attachments_fieldTb4b4b4:
Te6edf3heading_str Tff7b72+Tff7b72= Tffa657strTb4b4b4(Te6edf3attachmentTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff, Ta5d6ff"
Te6edf3heading_str Tff7b72= Te6edf3heading_strTb4b4b4[Tb4b4b4:Tff7b72-T79c0ff2Tb4b4b4]

Te6edf3item Tff7b72= Te6edf3ListLXMessageCardTb4b4b4(
Te6edf3textTff7b72=Te6edf3pre_contentTff7b72+Te6edf3message_markupTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72+Te6edf3extra_contentTb4b4b4,
Te6edf3headingTff7b72=Te6edf3heading_strTb4b4b4,
Te6edf3md_bg_colorTff7b72=Te6edf3msg_colorTb4b4b4,
Tb4b4b4)

Tff7b72if Te6edf3has_attachmentTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffattachments_field Tff7b72= Te6edf3attachments_field

Tff7b72if Te6edf3image_field Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffhas_image Tff7b72= Tff7b72True
Te6edf3itemTff7b72.Td2a8ffimage_field Tff7b72= Te6edf3image_field
Te6edf3img Tff7b72= Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffmessage_image
Te6edf3imgTff7b72.Td2a8ffsource Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3imgTff7b72.Td2a8fftexture Tff7b72= Te6edf3CoreImageTb4b4b4(Te6edf3ioTff7b72.Td2a8ffBytesIOTb4b4b4(Te6edf3image_fieldTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3extTff7b72=Te6edf3image_fieldTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tff7b72.Td2a8fftexture
Te6edf3imgTff7b72.Td2a8ffreloadTb4b4b4(Tb4b4b4)

Tff7b72elseTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffhas_image Tff7b72= Tff7b72False

Tff7b72def Td2a8ffcheck_texturesTb4b4b4(Te6edf3wTb4b4b4, Te6edf3valTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72if Te6edf3wTff7b72.Td2a8fftexture_sizeTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72> T79c0ff360 Tff7b72and Te6edf3wTff7b72.Td2a8fftexture_sizeTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72>Tff7b72= Tff7b72selfTff7b72.Td2a8ffmax_texture_sizeTb4b4b4:
Te6edf3wTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ff[i]The content of this message is too large to display in the message stream. You can copy the message content into another program by using the context menu of this message, and selecting [b]Copy[/b].[/i]Ta5d6ff"

Tff7b72if Te6edf3wTff7b72.Td2a8ffownerTff7b72.Td2a8ffhas_imageTb4b4b4:
Te6edf3img Tff7b72= Te6edf3wTff7b72.Td2a8ffownerTff7b72.Td2a8ffidsTff7b72.Td2a8ffmessage_image
Te6edf3imgTff7b72.Td2a8ffsize_hint_x Tff7b72= T79c0ff1
Te6edf3imgTff7b72.Td2a8ffsize_hint_y Tff7b72= Tff7b72None
Te6edf3img_w Tff7b72= Te6edf3wTff7b72.Td2a8ffownerTff7b72.Td2a8ffsizeTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3img_ratio Tff7b72= Te6edf3imgTff7b72.Td2a8fftexture_sizeTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72/ Te6edf3imgTff7b72.Td2a8fftexture_sizeTb4b4b4[T79c0ff1Tb4b4b4]
Te6edf3imgTff7b72.Td2a8ffsize Tff7b72= Tb4b4b4(Te6edf3img_wTb4b4b4,Te6edf3img_wTff7b72/Te6edf3img_ratioTb4b4b4)
Te6edf3imgTff7b72.Td2a8fffit_mode Tff7b72= Ta5d6ff"Ta5d6ffcontainTa5d6ff"

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffAn error occurred while scaling message display textures:Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffcontent_textTff7b72.Td2a8ffowner Tff7b72= Te6edf3item
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffcontent_textTff7b72.Td2a8ffbindTb4b4b4(Te6edf3texture_sizeTff7b72=Te6edf3check_texturesTb4b4b4)

Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3itemTff7b72.Td2a8ffradius Tff7b72= Te6edf3dpTb4b4b4(T79c0ff5Tb4b4b4)

Te6edf3itemTff7b72.Td2a8ffsb_uid Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]
Te6edf3itemTff7b72.Td2a8ffm Tff7b72= Te6edf3m
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffheading_textTff7b72.Td2a8fftheme_text_color Tff7b72= Ta5d6ff"Ta5d6ffCustomTa5d6ff"
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffheading_textTff7b72.Td2a8fftext_color Tff7b72= Te6edf3mt_color
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffcontent_textTff7b72.Td2a8fftheme_text_color Tff7b72= Ta5d6ff"Ta5d6ffCustomTa5d6ff"
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffcontent_textTff7b72.Td2a8fftext_color Tff7b72= Te6edf3mt_color
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffmsg_submenuTff7b72.Td2a8fftheme_text_color Tff7b72= Ta5d6ff"Ta5d6ffCustomTa5d6ff"
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffmsg_submenuTff7b72.Td2a8fftext_color Tff7b72= Te6edf3mt_color

Tff7b72def Td2a8ffgen_delTb4b4b4(Te6edf3mhashTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3yes_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4, Te6edf3theme_text_colorTff7b72=Ta5d6ff"Ta5d6ffCustomTa5d6ff"Tb4b4b4, Te6edf3line_colorTff7b72=Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffcolor_rejectTb4b4b4, Te6edf3text_colorTff7b72=Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffcolor_rejectTb4b4b4)
Te6edf3no_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffDelete message?Ta5d6ff"Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3yes_buttonTb4b4b4, Te6edf3no_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_yesTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffdelete_messageTb4b4b4(Te6edf3mhashTb4b4b4)

Tff7b72def Td2a8ffcbTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreloadTb4b4b4(Tb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3cbTb4b4b4, T79c0ff0.2Tb4b4b4)

Tff7b72def Td2a8ffdl_noTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Te6edf3yes_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_yesTb4b4b4)
Te6edf3no_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_noTb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_retryTb4b4b4(Te6edf3mhashTb4b4b4, Te6edf3mcontentTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessages_viewTff7b72.Td2a8ffidsTff7b72.Td2a8ffmessage_textTff7b72.Td2a8fftext Tff7b72= Te6edf3mcontentTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffdelete_messageTb4b4b4(Te6edf3mhashTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffmessage_send_actionTb4b4b4(Tb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffcbTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreloadTb4b4b4(Tb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3cbTb4b4b4, T79c0ff0.2Tb4b4b4)

Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_copyTb4b4b4(Te6edf3msgTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Te6edf3msgTb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_save_imageTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3image_field Tff7b72= Te6edf3itemTff7b72.Td2a8ffimage_field
Te6edf3extension Tff7b72= Tffa657strTb4b4b4(Te6edf3image_fieldTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Te6edf3filename Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Ta5d6ff"Ta5d6ffLXM_Ta5d6ff%Ta5d6ffY_Ta5d6ff%Ta5d6ffm_Tffd700%dTa5d6ff_Ta5d6ff%Ta5d6ffH_Ta5d6ff%Ta5d6ffM_Ta5d6ff%Ta5d6ffSTa5d6ff"Tb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff.Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3extensionTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffshare_imageTb4b4b4(Te6edf3image_fieldTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Te6edf3filenameTb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3x

Tff7b72elseTb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3image_field Tff7b72= Te6edf3itemTff7b72.Td2a8ffimage_field
Tff7b72tryTb4b4b4:
Te6edf3extension Tff7b72= Tffa657strTb4b4b4(Te6edf3image_fieldTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Te6edf3filename Tff7b72= Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Ta5d6ff"Ta5d6ffLXM_Ta5d6ff%Ta5d6ffY_Ta5d6ff%Ta5d6ffm_Tffd700%dTa5d6ff_Ta5d6ff%Ta5d6ffH_Ta5d6ff%Ta5d6ffM_Ta5d6ff%Ta5d6ffSTa5d6ff"Tb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff.Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3extensionTb4b4b4)
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3save_path Tff7b72= Tffa657strTb4b4b4(Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tff7b72+Te6edf3filenameTb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6fffile://Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3save_path Tff7b72= Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3filename

Tff7b72with Tffa657openTb4b4b4(Te6edf3save_pathTb4b4b4, Ta5d6ff"Ta5d6ffwbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3save_fileTb4b4b4:
Te6edf3save_fileTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3image_fieldTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)

Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffImage SavedTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffThe image has been saved to: Ta5d6ff"Tff7b72+Te6edf3save_pathTff7b72+Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffErrorTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffCould not save the image:Tffea00\nTffea00\nTa5d6ff"Tff7b72+Te6edf3save_pathTff7b72+Ta5d6ff"Tffea00\nTffea00\nTa5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_save_attachmentTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3attachments_field Tff7b72= Te6edf3itemTff7b72.Td2a8ffattachments_field
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3attachments_fieldTb4b4b4, Tffa657listTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3output_path Tff7b72= Tffa657strTb4b4b4(Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6fffile://Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3output_path Tff7b72= Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"

Tff7b72if Tffa657lenTb4b4b4(Te6edf3attachments_fieldTb4b4b4) Tff7b72== T79c0ff1Tb4b4b4:
Te6edf3saved_text Tff7b72= Ta5d6ff"Ta5d6ffThe attached file has been saved to: Ta5d6ff"Tff7b72+Te6edf3output_path
Te6edf3saved_title Tff7b72= Ta5d6ff"Ta5d6ffAttachment SavedTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3saved_text Tff7b72= Ta5d6ff"Ta5d6ffThe attached files have been saved to: Ta5d6ff"Tff7b72+Te6edf3output_path
Te6edf3saved_title Tff7b72= Ta5d6ff"Ta5d6ffAttachment SavedTa5d6ff"

Tff7b72for Te6edf3attachment Tff7b72in Te6edf3attachments_fieldTb4b4b4:
Te6edf3filename Tff7b72= Tffa657strTb4b4b4(Te6edf3attachmentTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff../Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff..Tffea00\\Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3save_path Tff7b72= Tffa657strTb4b4b4(Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tff7b72+Te6edf3filenameTb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6fffile://Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3save_path Tff7b72= Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3filename

Te6edf3name_counter Tff7b72= T79c0ff1
Te6edf3pre_count Tff7b72= Te6edf3save_path
Tff7b72while Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexistsTb4b4b4(Te6edf3save_pathTb4b4b4)Tb4b4b4:
Te6edf3save_path Tff7b72= Tffa657strTb4b4b4(Te6edf3pre_countTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff.Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3name_counterTb4b4b4)
Te6edf3name_counter Tff7b72+Tff7b72= T79c0ff1

Te6edf3saved_text Tff7b72= Ta5d6ff"Ta5d6ffThe attached file has been saved to: Ta5d6ff"Tff7b72+Te6edf3save_path

Tff7b72with Tffa657openTb4b4b4(Te6edf3save_pathTb4b4b4, Ta5d6ff"Ta5d6ffwbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3save_fileTb4b4b4:
Te6edf3save_fileTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3attachmentTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)

Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Te6edf3saved_titleTb4b4b4,
Te6edf3textTff7b72=Te6edf3saved_textTb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffErrorTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffCould not save the attachment:Tffea00\nTffea00\nTa5d6ff"Tff7b72+Te6edf3save_pathTff7b72+Ta5d6ff"Tffea00\nTffea00\nTa5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_copy_telemetryTb4b4b4(Te6edf3telemeterTb4b4b4, Te6edf3extra_telemetryTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3telemeter
Tff7b72if Te6edf3extra_telemetry Tff7b72and Tffa657lenTb4b4b4(Te6edf3extra_telemetryTb4b4b4) Tff7b72!= T79c0ff0Tb4b4b4:
Te6edf3physical_link Tff7b72= Te6edf3extra_telemetry
Te6edf3telemeterTff7b72.Td2a8ffsynthesizeTb4b4b4(Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffrssiTa5d6ff" Tff7b72in Te6edf3physical_linkTb4b4b4: Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffrssi Tff7b72= Te6edf3physical_linkTb4b4b4[Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6ffsnrTa5d6ff" Tff7b72in Te6edf3physical_linkTb4b4b4: Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffsnr Tff7b72= Te6edf3physical_linkTb4b4b4[Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6ffqualityTa5d6ff" Tff7b72in Te6edf3physical_linkTb4b4b4: Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffq Tff7b72= Te6edf3physical_linkTb4b4b4[Ta5d6ff"Ta5d6ffqualityTa5d6ff"Tb4b4b4]
Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffupdate_dataTb4b4b4(Tb4b4b4)
Te6edf3tlm Tff7b72= Te6edf3telemeterTff7b72.Td2a8ffread_allTb4b4b4(Tb4b4b4)
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Tffa657strTb4b4b4(Te6edf3tlmTb4b4b4)Tb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffAn error occurred while decoding telemetry. The contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Ta5d6ff"Ta5d6ffCould not decode telemetryTa5d6ff"Tb4b4b4)

Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_copy_lxm_uriTb4b4b4(Te6edf3lxmTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Te6edf3lxmTff7b72.Td2a8ffas_uriTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_save_qrTb4b4b4(Te6edf3lxmTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3qr_image Tff7b72= Te6edf3lxmTff7b72.Td2a8ffas_qrTb4b4b4(Tb4b4b4)
Te6edf3hash_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3lxmTff7b72.Td2a8ffhashTb4b4b4[Tff7b72-T79c0ff2Tb4b4b4:Tb4b4b4]Tb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3filename Tff7b72= Ta5d6ff"Ta5d6ffPaper_Message_Ta5d6ff"Tff7b72+Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3file_ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff_Ta5d6ff"Tff7b72+Te6edf3hash_strTff7b72+Ta5d6ff"Ta5d6ff.pngTa5d6ff"
T8b949e# filename = "Paper_Message.png"
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffshare_imageTb4b4b4(Te6edf3qr_imageTb4b4b4, Te6edf3filenameTb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3x

Tff7b72elseTb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3qr_image Tff7b72= Te6edf3lxmTff7b72.Td2a8ffas_qrTb4b4b4(Tb4b4b4)
Te6edf3hash_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3lxmTff7b72.Td2a8ffhashTb4b4b4[Tff7b72-T79c0ff2Tb4b4b4:Tb4b4b4]Tb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3filename Tff7b72= Ta5d6ff"Ta5d6ffPaper_Message_Ta5d6ff"Tff7b72+Te6edf3timeTff7b72.Td2a8ffstrftimeTb4b4b4(Te6edf3file_ts_formatTb4b4b4, Te6edf3timeTff7b72.Td2a8fflocaltimeTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff_Ta5d6ff"Tff7b72+Te6edf3hash_strTff7b72+Ta5d6ff"Ta5d6ff.pngTa5d6ff"
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3save_path Tff7b72= Tffa657strTb4b4b4(Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tff7b72+Te6edf3filenameTb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6fffile://Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3save_path Tff7b72= Te6edf3plyerTff7b72.Td2a8ffstoragepathTff7b72.Td2a8ffget_downloads_dirTb4b4b4(Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Te6edf3filename

Te6edf3qr_imageTff7b72.Td2a8ffsaveTb4b4b4(Te6edf3save_pathTb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffQR Code SavedTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffThe paper message has been saved to: Ta5d6ff"Tff7b72+Te6edf3save_pathTff7b72+Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffErrorTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffCould not save the paper message QR-code to:Tffea00\nTffea00\nTa5d6ff"Tff7b72+Te6edf3save_pathTff7b72+Ta5d6ff"Tffea00\nTffea00\nTa5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3x

Tff7b72def Td2a8ffgen_print_qrTb4b4b4(Te6edf3lxmTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3x
Tff7b72elseTb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3qr_image Tff7b72= Te6edf3lxmTff7b72.Td2a8ffas_qrTb4b4b4(Tb4b4b4)
Te6edf3qr_tmp_path Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fftmp_dirTff7b72+Ta5d6ff"Ta5d6ff/Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3lxmTff7b72.Td2a8ffhashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4)
Te6edf3qr_imageTff7b72.Td2a8ffsaveTb4b4b4(Te6edf3qr_tmp_pathTb4b4b4)

Te6edf3print_command Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffprint_commandTa5d6ff"Tb4b4b4]Tff7b72+Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72+Te6edf3qr_tmp_path
Te6edf3return_code Tff7b72= Te6edf3subprocessTff7b72.Td2a8ffcallTb4b4b4(Te6edf3shlexTff7b72.Td2a8ffsplitTb4b4b4(Te6edf3print_commandTb4b4b4)Tb4b4b4, Te6edf3stdoutTff7b72=Te6edf3subprocessTff7b72.Td2a8ffDEVNULLTb4b4b4, Te6edf3stderrTff7b72=Te6edf3subprocessTff7b72.Td2a8ffDEVNULLTb4b4b4)

Te6edf3osTff7b72.Td2a8ffunlinkTb4b4b4(Te6edf3qr_tmp_pathTb4b4b4)

Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffErrorTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffCould not print the paper message QR-code.Tffea00\nTffea00\nTa5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3x

Te6edf3retry_item Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffRetryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_retryTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}
Tff7b72if Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffPAPERTb4b4b4:
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3qr_save_text Tff7b72= Ta5d6ff"Ta5d6ffShare QR CodeTa5d6ff"
Te6edf3dm_items Tff7b72= Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffShare QR CodeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_save_qrTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopy LXM URITa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copy_lxm_uriTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopy message textTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copyTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDeleteTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_delTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}
Tb4b4b4]

Tff7b72elseTb4b4b4:
Te6edf3dm_items Tff7b72= Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPrint QR CodeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_print_qrTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSave QR CodeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_save_qrTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopy LXM URITa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copy_lxm_uriTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6fflxmTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopy message textTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copyTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDeleteTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_delTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}
Tb4b4b4]

Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3LXMFTff7b72.Td2a8ffLXMessageTff7b72.Td2a8ffFAILEDTb4b4b4:
Te6edf3dm_items Tff7b72= Tb4b4b4[
Te6edf3retry_itemTb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copyTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDeleteTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_delTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}
Tb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3telemeter Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3dm_items Tff7b72= Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copyTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopy telemetryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copy_telemetryTb4b4b4(Te6edf3telemeterTb4b4b4, Te6edf3extra_telemetryTb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDeleteTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_delTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}
Tb4b4b4]

Tff7b72elseTb4b4b4:
Te6edf3dm_items Tff7b72= Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCopyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_copyTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDeleteTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_delTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3itemTb4b4b4)
Tb4b4b4}
Tb4b4b4]
Tff7b72if Te6edf3has_imageTb4b4b4:
Te6edf3extra_item Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSave imageTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_save_imageTb4b4b4(Te6edf3itemTb4b4b4)
Tb4b4b4}
Te6edf3dm_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3extra_itemTb4b4b4)
Tff7b72if Te6edf3has_attachmentTb4b4b4:
Te6edf3extra_item Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOneLineListItemTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSave attachmentTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff40Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3gen_save_attachmentTb4b4b4(Te6edf3itemTb4b4b4)
Tb4b4b4}
Te6edf3dm_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3extra_itemTb4b4b4)

Te6edf3itemTff7b72.Td2a8ffdmenu Tff7b72= Te6edf3MDDropdownMenuTb4b4b4(
Te6edf3callerTff7b72=Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffmsg_submenuTb4b4b4,
Te6edf3itemsTff7b72=Te6edf3dm_itemsTb4b4b4,
Te6edf3positionTff7b72=Ta5d6ff"Ta5d6ffautoTa5d6ff"Tb4b4b4,
Te6edf3widthTff7b72=Te6edf3dpTb4b4b4(T79c0ff256Tb4b4b4)Tb4b4b4,
Te6edf3elevationTff7b72=T79c0ff0Tb4b4b4,
Te6edf3radiusTff7b72=Te6edf3dpTb4b4b4(T79c0ff3Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffmd_bg_color Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffcolor_hover
Te6edf3itemTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffretry_item Tff7b72= Te6edf3retry_item

Tff7b72def Td2a8ffcallback_factoryTb4b4b4(Te6edf3refTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffxTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3refTff7b72.Td2a8ffdmenuTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3x

T8b949e# Bind menu open
Te6edf3itemTff7b72.Td2a8ffidsTff7b72.Td2a8ffmsg_submenuTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3callback_factoryTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffloading_earlier_messagesTb4b4b4:
Te6edf3insert_pos Tff7b72= Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8fflistTff7b72.Td2a8ffchildrenTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3insert_pos Tff7b72= T79c0ff0

Tff7b72selfTff7b72.Td2a8ffadded_item_hashesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidgetsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3itemTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflistTff7b72.Td2a8ffadd_widgetTb4b4b4(Te6edf3itemTb4b4b4, Te6edf3insert_posTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8fflatest_message_timestamp Tff7b72== Tff7b72None Tff7b72or Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffreceivedTa5d6ff"Tb4b4b4] Tff7b72> Tff7b72selfTff7b72.Td2a8fflatest_message_timestampTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflatest_message_timestamp Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffreceivedTa5d6ff"Tb4b4b4]

Tff7b72if Tff7b72selfTff7b72.Td2a8ffearliest_message_timestamp Tff7b72== Tff7b72None Tff7b72or Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffreceivedTa5d6ff"Tb4b4b4] Tff7b72< Tff7b72selfTff7b72.Td2a8ffearliest_message_timestampTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffearliest_message_timestamp Tff7b72= Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffreceivedTa5d6ff"Tb4b4b4]

Tff7b72selfTff7b72.Td2a8ffadded_messages Tff7b72+Tff7b72= Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffnew_messagesTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffnew_messages Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72def Td2a8ffget_widgetTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8fflist

Tff7b72def Td2a8ffclose_send_error_dialogTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsend_error_dialogTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsend_error_dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Te6edf3messages_screen_kv Tff7b72= Ta5d6ff"""
Ta5d6ffMDScreen:
Ta5d6ff name: Ta5d6ff"Ta5d6ffmessages_screenTa5d6ff"
Ta5d6ff
Ta5d6ff BoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"

Ta5d6ff MDTopAppBar:
Ta5d6ff id: messages_toolbar
Ta5d6ff anchor_title: Ta5d6ff"Ta5d6ffleftTa5d6ff"
Ta5d6ff title: Ta5d6ff"Ta5d6ffMessagesTa5d6ff"
Ta5d6ff elevation: 0
Ta5d6ff left_action_items:
Ta5d6ff [[Ta5d6ff'Ta5d6ffmenuTa5d6ff'Ta5d6ff, lambda x: root.app.nav_drawer.set_state(Ta5d6ff"Ta5d6ffopenTa5d6ff"Ta5d6ff)],]
Ta5d6ff right_action_items:
Ta5d6ff [
Ta5d6ff [Ta5d6ff'Ta5d6ffattachment-plusTa5d6ff'Ta5d6ff, lambda x: root.app.message_attachment_action(self)],
Ta5d6ff [Ta5d6ff'Ta5d6ffmap-marker-pathTa5d6ff'Ta5d6ff, lambda x: root.app.peer_show_telemetry_action(self)],
Ta5d6ff [Ta5d6ff'Ta5d6ffmap-searchTa5d6ff'Ta5d6ff, lambda x: root.app.peer_show_location_action(self)],
Ta5d6ff [Ta5d6ff'Ta5d6fflan-connectTa5d6ff'Ta5d6ff, lambda x: root.app.message_propagation_action(self)],
Ta5d6ff [Ta5d6ff'Ta5d6ffcloseTa5d6ff'Ta5d6ff, lambda x: root.app.close_settings_action(self)],
Ta5d6ff ]

Ta5d6ff ScrollView:
Ta5d6ff id: messages_scrollview
Ta5d6ff do_scroll_x: False
Ta5d6ff do_scroll_y: True

Ta5d6ff BoxLayout:
Ta5d6ff id: no_keys_part
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff padding: [dp(16), dp(0), dp(16), dp(16)]
Ta5d6ff spacing: dp(24)
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height + dp(64)

Ta5d6ff MDLabel:
Ta5d6ff id: nokeys_text
Ta5d6ff text: Ta5d6ff"Ta5d6ff"

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff icon: Ta5d6ff"Ta5d6ffkey-wirelessTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffQuery Network For KeysTa5d6ff"
Ta5d6ff on_release: root.app.key_query_action(self)
Ta5d6ff

Ta5d6ff BoxLayout:
Ta5d6ff id: message_input_part
Ta5d6ff padding: [dp(16), dp(0), dp(16), dp(16)]
Ta5d6ff spacing: dp(24)
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height

Ta5d6ff MDTextField:
Ta5d6ff id: message_text
Ta5d6ff keyboard_suggestions: True
Ta5d6ff multiline: True
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffWrite messageTa5d6ff"
Ta5d6ff mode: Ta5d6ff"Ta5d6ffrectangleTa5d6ff"
Ta5d6ff max_height: dp(100)

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: message_send_button
Ta5d6ff icon: Ta5d6ff"Ta5d6fftransfer-upTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffSendTa5d6ff"
Ta5d6ff padding: [dp(10), dp(13), dp(10), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff on_release: root.app.message_send_action(self)
Ta5d6ff"""

Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Ta5d6ff"""
Ta5d6ff<ListLXMessageCard>:
Ta5d6ff style: Ta5d6ff"Ta5d6ffoutlinedTa5d6ff"
Ta5d6ff padding: dp(8)
Ta5d6ff radius: dp(4)
Ta5d6ff size_hint: 1.0, None
Ta5d6ff height: content_text.height + heading_text.height + message_image.size[1] + dp(32)
Ta5d6ff pos_hint: Ta5d6ff{Ta5d6ff"Ta5d6ffcenter_xTa5d6ff"Ta5d6ff: .5, Ta5d6ff"Ta5d6ffcenter_yTa5d6ff"Ta5d6ff: .5}

Ta5d6ff MDRelativeLayout:
Ta5d6ff size_hint: 1.0, None
Ta5d6ff theme_text_color: Ta5d6ff"Ta5d6ffContrastParentBackgroundTa5d6ff"

Ta5d6ff MDIconButton:
Ta5d6ff id: msg_submenu
Ta5d6ff icon: Ta5d6ff"Ta5d6ffdots-verticalTa5d6ff"
Ta5d6ff # theme_text_color: Ta5d6ff'Ta5d6ffCustomTa5d6ff'
Ta5d6ff # text_color: rgba(255,255,255,216)
Ta5d6ff pos:
Ta5d6ff root.width - (self.width + root.padding[0] + dp(4)), root.height - (self.height + root.padding[0] + dp(4))

Ta5d6ff MDLabel:
Ta5d6ff id: heading_text
Ta5d6ff markup: True
Ta5d6ff text: root.heading
Ta5d6ff adaptive_size: True
Ta5d6ff # theme_text_color: Ta5d6ff'Ta5d6ffCustomTa5d6ff'
Ta5d6ff # text_color: rgba(255,255,255,100)
Ta5d6ff pos: 0, root.height - (self.height + root.padding[0] + dp(8))

Ta5d6ff Image:
Ta5d6ff id: message_image
Ta5d6ff size_hint_x: 0
Ta5d6ff size_hint_y: 0
Ta5d6ff pos: 0, root.height - (self.height + root.padding[0] + dp(8)) - heading_text.height - dp(8)

Ta5d6ff MDLabel:
Ta5d6ff id: content_text
Ta5d6ff text: root.text
Ta5d6ff markup: True
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff<CustomOneLineIconListItem>
Ta5d6ff IconLeftWidget:
Ta5d6ff icon: root.icon
Ta5d6ff"""Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────